package com.smartleanx.module.hrm.service.dingDing;

import com.alibaba.fastjson2.JSONObject;
import com.github.pagehelper.PageInfo;
import com.smartleanx.module.hrm.controller.admin.dingDing.bo.DingAttendanceConfirmationBo;
import com.smartleanx.module.hrm.controller.admin.dingDing.bo.DingAttendanceRecordBo;
import com.smartleanx.module.hrm.controller.admin.dingDing.bo.DingConfirmationBo;
import com.smartleanx.module.hrm.controller.admin.dingDing.vo.SystemFrameVo;
import com.smartleanx.module.hrm.dal.dataobject.dingDing.DingAttendanceConfirmation;
import com.smartleanx.module.hrm.dal.dataobject.dingDing.DingAttendanceRecord;
import com.smartleanx.module.hrm.dal.dataobject.dingDing.DingConfirmation;

import java.util.List;
import java.util.Map;

public interface DingUserService {

    List<JSONObject> geBySelect(String dingUserName);




    Integer bdDingUser(Integer employeeId, Integer dingUserId);


    Integer removeBdDingUser(Integer employeeId);


    SystemFrameVo getFrameByDepartmentId(Integer departmentId, boolean getChild);


    PageInfo selectList(DingAttendanceRecordBo dingAttendanceRecordBo);

    List<JSONObject> selectTeamList(String teamName);

    JSONObject selectColumnList(DingAttendanceRecordBo dingAttendanceRecordBo);

    Map<String, List<List<String>>> selectColumnExcel(DingAttendanceRecordBo dingAttendanceRecordBo);



    JSONObject selectColumnMonthList(DingAttendanceRecordBo dingAttendanceRecordBo);


    JSONObject monthInfo(Long  dingUserId, Long time);
    void generateColumn(DingAttendanceConfirmationBo dingAttendanceConfirmationBo);

    void generateColumnSystem(DingAttendanceConfirmationBo dingAttendanceConfirmationBo);

    PageInfo<DingAttendanceConfirmation> selectListDingAttendanceConfirmation(DingConfirmationBo dingConfirmationBo);

    List<JSONObject> selectByColumn();

    JSONObject selectByConfirmationColumn(Integer confirmationId);


    JSONObject selectById(Integer confirmationId, Integer employeeId);

    JSONObject selectEmployeeById(Integer confirmationId, Integer employeeId);

    List<DingConfirmation> selectByConfirmation(String workDate);

    DingConfirmation selectByConfirmationOne(Integer confirmationId);

    Integer UpdateGenerateColumn(DingAttendanceConfirmationBo dingAttendanceConfirmationBo);

    Integer removeConfirmation(Integer id);

    JSONObject selectUpdateConfirmationById(Integer id);

    Integer updateConfirmationInfo(JSONObject param);

    Integer sendAllConfirmation(Integer id);

    Integer sendConfirmation(Integer id);

    Integer withdrawConfirmation(Integer id);

    Integer withdrawAllConfirmation(Integer id);

    Integer checkConfirmation(Integer id);

    Integer confirmConfirmation(Integer id, String message, Integer status);

    PageInfo selectConfirmationByEmployee(Integer employeeId, Integer pageNum, Integer pageSize);


    Map<String, List<List<String>>> selectConfirmExcel(Integer confirmationId);

    Map<String, List<List<String>>>  selectColumnMonthExcel(DingAttendanceRecordBo dingAttendanceRecordBo);
    String cropInfo();

    Integer bangDingCrop(String cropName,Long headerTenantId);





}